HEADS UP: This notebook was written for Python 3.


In [1]:
!ls


PyPI stats.ipynb        pypi-release.pickle     pypi-releaseurls.pickle

The file pypi-release.pickle is a dictionary of {package: versions}. The file pypi-releaseurls.pickle is a dictionary of {package: {version: metadata}}. The only information in pypi-release.pickle that isn't in pypi-releaseurls.pickle is the ordering of the versions.

The releaseurls was built over a few days. There are a few packages in pypi-release.pickle that aren't in releaseurls. Dumps were made between March 25 and March 27 2014.

The file releaseurls.pickle is 110 MB.


In [2]:
import pickle
with open('pypi-release.pickle', 'rb') as f:
    release = pickle.load(f)
with open('pypi-releaseurls.pickle', 'rb') as f:
    releaseurls = pickle.load(f)

Example of the data


In [3]:
release['numpy']


Out[3]:
['1.8.0',
 '1.7.2',
 '1.7.1',
 '1.7.0',
 '1.6.2',
 '1.6.1',
 '1.6.0',
 '1.5.1',
 '1.5.0',
 '1.4.1',
 '1.4.0',
 '1.3.0',
 '1.2.1',
 '1.2.0',
 '1.1.1',
 '1.0.4',
 '1.0.3',
 '1.0',
 '1.0rc3',
 '1.0rc2',
 '1.0rc1',
 '1.0b5',
 '1.0b4',
 '1.0b1',
 '0.9.8',
 '0.9.6']

In [4]:
releaseurls['numpy']['1.8.0']


Out[4]:
[{'comment_text': '',
  'downloads': 349431,
  'filename': 'numpy-1.8.0.tar.gz',
  'has_sig': False,
  'md5_digest': '2a4b0423a758706d592abb6721ec8dcd',
  'packagetype': 'sdist',
  'python_version': 'source',
  'size': 3779617,
  'upload_time': <DateTime '20131030T22:34:42' at 11c5f2f10>,
  'url': 'https://pypi.python.org/packages/source/n/numpy/numpy-1.8.0.tar.gz'},
 {'comment_text': '',
  'downloads': 141626,
  'filename': 'numpy-1.8.0.zip',
  'has_sig': False,
  'md5_digest': '6c918bb91c0cfa055b16b13850cfcd6e',
  'packagetype': 'sdist',
  'python_version': 'source',
  'size': 4285801,
  'upload_time': <DateTime '20131030T22:36:34' at 11c5f4150>,
  'url': 'https://pypi.python.org/packages/source/n/numpy/numpy-1.8.0.zip'}]

Define some helper functions


In [5]:
def maxall(iterable, key=None):
    """
    A list of all max items from the iterable
    """
    key = key or (lambda x: x)
    m = max(iterable, key=key)
    return [i for i in iterable if key(i) == key(m)]

def minall(iterable, key=None):
    """
    A list of all min items from the iterable
    """
    key = key or (lambda x: x)
    m = min(iterable, key=key)
    return [i for i in iterable if key(i) == key(m)]

Basic statistics

Number of packages


In [6]:
num_pkgs = len(release)
num_pkgs


Out[6]:
41529

Number of versions of all packages


In [7]:
num_versions = sum(len(release[i]) for i in release)
num_versions


Out[7]:
215805

Average number of versions per package


In [8]:
num_versions/num_pkgs


Out[8]:
5.19648920031785

Number of release urls


In [9]:
num_releaseurls = sum(sum(len(releaseurls[i][j]) for j in releaseurls[i]) for i in releaseurls)
num_releaseurls


Out[9]:
242733

Average number of release urls per version


In [10]:
num_releaseurls/num_versions


Out[10]:
1.1247793146590672

Average number of release urls per package


In [11]:
num_releaseurls/num_pkgs


Out[11]:
5.844903561366756

Fun stats

The largest package name on PyPI


In [12]:
maxall(release, key=len)


Out[12]:
['Aaaaaaaaaaaaaaaaaaa-aaaaaaaaa-aaaaaaasa-aaaaaaasa-aaaaasaa-aaaaaaasa-bbbbbbbbbbb']

The smallest package names on PyPI (all single letter packages)


In [13]:
minall(release, key=len)


Out[13]:
['i',
 'q',
 'y',
 'h',
 'a',
 '5',
 'j',
 'b',
 'T',
 'e',
 'r',
 'o',
 'u',
 'M',
 'd',
 'c',
 'p',
 'g']

I'm sure that's an anagram for something.

The package with the most versions.


In [14]:
maxvers = maxall(release, key=lambda i: len(release[i]))
maxvers


Out[14]:
['tendenci']

In [15]:
[len(release[i]) for i in maxvers]


Out[15]:
[299]

In [16]:
[release[i] for i in maxvers]


Out[16]:
[['5.1.314',
  '5.1.313',
  '5.1.312',
  '5.1.311',
  '5.1.310',
  '5.1.309',
  '5.1.308',
  '5.1.307',
  '5.1.306',
  '5.1.305',
  '5.1.304',
  '5.1.303',
  '5.1.302',
  '5.1.300',
  '5.1.299',
  '5.1.298',
  '5.1.297',
  '5.1.296',
  '5.1.295',
  '5.1.294',
  '5.1.293',
  '5.1.292',
  '5.1.291',
  '5.1.290',
  '5.1.289',
  '5.1.287',
  '5.1.286',
  '5.1.285',
  '5.1.284',
  '5.1.283',
  '5.1.282',
  '5.1.281',
  '5.1.280',
  '5.1.279',
  '5.1.278',
  '5.1.277',
  '5.1.276',
  '5.1.275',
  '5.1.274',
  '5.1.273',
  '5.1.272',
  '5.1.271',
  '5.1.270',
  '5.1.269',
  '5.1.268',
  '5.1.267',
  '5.1.266',
  '5.1.265',
  '5.1.264',
  '5.1.263',
  '5.1.262',
  '5.1.261',
  '5.1.260',
  '5.1.259',
  '5.1.258',
  '5.1.257',
  '5.1.256',
  '5.1.255',
  '5.1.254',
  '5.1.253',
  '5.1.252',
  '5.1.251',
  '5.1.250',
  '5.1.249',
  '5.1.248',
  '5.1.247',
  '5.1.246',
  '5.1.245',
  '5.1.244',
  '5.1.243',
  '5.1.242',
  '5.1.241',
  '5.1.240',
  '5.1.239',
  '5.1.238',
  '5.1.237',
  '5.1.236',
  '5.1.235',
  '5.1.234',
  '5.1.233',
  '5.1.231',
  '5.1.230',
  '5.1.229',
  '5.1.228',
  '5.1.227',
  '5.1.226',
  '5.1.225',
  '5.1.224',
  '5.1.223',
  '5.1.221',
  '5.1.220',
  '5.1.219',
  '5.1.218',
  '5.1.217',
  '5.1.216',
  '5.1.215',
  '5.1.214',
  '5.1.212',
  '5.1.211',
  '5.1.210',
  '5.1.209',
  '5.1.208',
  '5.1.207',
  '5.1.206',
  '5.1.205',
  '5.1.204',
  '5.1.203',
  '5.1.202',
  '5.1.201',
  '5.1.200',
  '5.1.199',
  '5.1.198',
  '5.1.197',
  '5.1.196',
  '5.1.195',
  '5.1.194',
  '5.1.193',
  '5.1.192',
  '5.1.191',
  '5.1.190',
  '5.1.189',
  '5.1.188',
  '5.1.187',
  '5.1.186',
  '5.1.185',
  '5.1.184',
  '5.1.183',
  '5.1.182',
  '5.1.181',
  '5.1.180',
  '5.1.179',
  '5.1.178',
  '5.1.177',
  '5.1.175',
  '5.1.174',
  '5.1.173',
  '5.1.172',
  '5.1.171',
  '5.1.170',
  '5.1.169',
  '5.1.168',
  '5.1.166',
  '5.1.165',
  '5.1.164',
  '5.1.163',
  '5.1.162',
  '5.1.161',
  '5.1.160',
  '5.1.159',
  '5.1.158',
  '5.1.157',
  '5.1.156',
  '5.1.155',
  '5.1.154',
  '5.1.151',
  '5.1.150',
  '5.1.149',
  '5.1.148',
  '5.1.147',
  '5.1.146',
  '5.1.145',
  '5.1.143',
  '5.1.142',
  '5.1.141',
  '5.1.139',
  '5.1.138',
  '5.1.137',
  '5.1.136',
  '5.1.135',
  '5.1.134',
  '5.1.133',
  '5.1.132',
  '5.1.131',
  '5.1.130',
  '5.1.129',
  '5.1.128',
  '5.1.127',
  '5.1.126',
  '5.1.125',
  '5.1.124',
  '5.1.123',
  '5.1.122',
  '5.1.121',
  '5.1.120',
  '5.1.119',
  '5.1.118',
  '5.1.117',
  '5.1.116',
  '5.1.115',
  '5.1.114',
  '5.1.113',
  '5.1.112',
  '5.1.111',
  '5.1.110',
  '5.1.109',
  '5.1.108',
  '5.1.107',
  '5.1.106',
  '5.1.105',
  '5.1.104',
  '5.1.103',
  '5.1.102',
  '5.1.101',
  '5.1.100',
  '5.1.99',
  '5.1.98',
  '5.1.97',
  '5.1.96',
  '5.1.95',
  '5.1.94',
  '5.1.93',
  '5.1.92',
  '5.1.91',
  '5.1.90',
  '5.1.89',
  '5.1.88',
  '5.1.87',
  '5.1.86',
  '5.1.85',
  '5.1.84',
  '5.1.83',
  '5.1.81',
  '5.1.80',
  '5.1.79',
  '5.1.78',
  '5.1.77',
  '5.1.76',
  '5.1.75',
  '5.1.74',
  '5.1.73',
  '5.1.72',
  '5.1.71',
  '5.1.70',
  '5.1.69',
  '5.1.68',
  '5.1.67',
  '5.1.66',
  '5.1.65',
  '5.1.64',
  '5.1.63',
  '5.1.62',
  '5.1.61',
  '5.1.60',
  '5.1.59',
  '5.1.58',
  '5.1.57',
  '5.1.56',
  '5.1.55',
  '5.1.54',
  '5.1.53',
  '5.1.52',
  '5.1.51',
  '5.1.50',
  '5.1.49',
  '5.1.48',
  '5.1.47',
  '5.1.46',
  '5.1.45',
  '5.1.43',
  '5.1.42',
  '5.1.41',
  '5.1.40',
  '5.1.39',
  '5.1.38',
  '5.1.37',
  '5.1.36',
  '5.1.35',
  '5.1.34',
  '5.1.33',
  '5.1.32',
  '5.1.31',
  '5.1.30',
  '5.1.29',
  '5.1.28',
  '5.1.27',
  '5.1.26',
  '5.1.25',
  '5.1.24',
  '5.1.23',
  '5.1.22',
  '5.1.21',
  '5.1.19',
  '5.1.18',
  '5.1.16',
  '5.1.15',
  '5.1.14',
  '5.1.12',
  '5.1.11',
  '5.1.10',
  '5.1.9',
  '5.1.8',
  '5.1.7',
  '5.1.6',
  '5.1.5',
  '5.1.4',
  '5.1.3',
  '5.1.2',
  '5.1.1',
  '5.1.0']]

The number of packages with no versions.


In [17]:
len([i for i in release if len(release[i]) == 0])


Out[17]:
411

Longest version string


In [18]:
allvers = []
for i in release:
    allvers += release[i]
maxvers = maxall(allvers, key=len)
maxvers


Out[18]:
['Sysv_ipc gives Python programs access to System V semaphores, shared memory \nand message queues. Most (all?) Unixes (including OS X) support System V IPC. \nWindows+Cygwin 1.7 might also work. \n\nSample code is included.\n\nThis extension is released under the GPL. \n\nYou might also be interested in the similar POSIX IPC module at:\nhttp://semanchuk.com/philip/posix_ipc/']

In [19]:
for i in maxvers:
    print(i)


Sysv_ipc gives Python programs access to System V semaphores, shared memory 
and message queues. Most (all?) Unixes (including OS X) support System V IPC. 
Windows+Cygwin 1.7 might also work. 

Sample code is included.

This extension is released under the GPL. 

You might also be interested in the similar POSIX IPC module at:
http://semanchuk.com/philip/posix_ipc/

Smallest version strings


In [20]:
set(minall(allvers, key=len))


Out[20]:
{'-', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'F', 'y'}

Crazy version strings


In [21]:
def interestingsubstrings(s):
    # Get all non-numeric substrings
    r = []
    a = ''
    s = s.lower()
    for i in s:
        if i not in {'.', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}:
            a += i
        else:
            if a:
                r.append(a)
            a = ''
    if a:
        r.append(a)
    
    lowers = [chr(i) for i in range(97, 123)]
    # Add non-crazy things here
    for i in ['dev', 'rc', 'alpha', 'beta', 'final', 'pre', 'rev', 'post', 'stable'] + lowers:
        try:
            r.remove(i)
        except ValueError:
            pass
    return r

In [22]:
crazyvers = sorted(set([i for i in allvers if interestingsubstrings(i)]))
print(len(crazyvers))
crazyvers


1216
Out[22]:
['(latest release)',
 '(tip)',
 '(unreleased)',
 '-VERSION-',
 '-main-.-VLazy.object.at.0x1006edf10-',
 '-main-.-VLazy.object.at.0x100996e90-',
 '-main-.-VLazy.object.at.0x104ba8b50-',
 '-main-.-VLazy.object.at.0x107467e90-',
 '-main-.-VLazy.object.at.0x108711e90-',
 '-main-.-VLazy.object.at.0x10927db50-',
 '-main-.-VLazy.object.at.0x1094ebbd0-',
 '-main-.-VLazy.object.at.0x10c561f10-',
 '-main-.-VLazy.object.at.0x10f540f10-',
 '-main-.-VLazy.object.at.0x10f717bd0-',
 '-main-.-VLazy.object.at.0x10f76ae90-',
 '.1.4.3-1-g2e69cc8',
 '.99 version 3',
 '.lol.',
 '0-develop-1-g3c6f1b9',
 '0-develop-1-gd67cd85',
 '0.0+',
 '0.0.0+',
 '0.0.0-87-gadaccee',
 '0.0.0-dirty',
 '0.0.0-prealpha',
 '0.0.0.1.g14fde99',
 '0.0.1(beta)',
 '0.0.1+',
 '0.0.1-1df42153',
 '0.0.1-2-gdd59.dev-20121019',
 '0.0.1-5c1860da',
 '0.0.1-devel',
 '0.0.1-develop-11-gec7021b',
 '0.0.1-develop-15-gfbe1846',
 '0.0.1-develop-2-gdef9690',
 '0.0.1-develop-4-g996b465',
 '0.0.1-develop-9-g687e309',
 '0.0.1-gevent',
 '0.0.1-git.1.8cd16e5',
 '0.0.1-git.2.1c8514c',
 '0.0.1-git.3.8c0f382',
 '0.0.1-git.4.842fbc8',
 '0.0.1-git.7.48a5682',
 '0.0.1-mdfix',
 '0.0.1-r001a-ekcebo-ivaritt',
 '0.0.1-test',
 '0.0.1.2.ga544917',
 '0.0.1.3.geaefd7f',
 '0.0.1.7-README',
 '0.0.1.7-README-2',
 '0.0.1.7-README-2-0',
 '0.0.1.a544.g27dd19d',
 '0.0.1.dev.unknown',
 '0.0.1.dev12.ga105156',
 '0.0.1.dev15.g7efbf12',
 '0.0.1.dev4be05ed5c669c8b5094fb8681608009bec147f09',
 '0.0.1.dev712b2db7d5d2a750f91d3c7164b5a44d4e8b5b2a',
 '0.0.1.devf494cb0',
 '0.0.1.git-6e4b6cc',
 '0.0.1.git-9131c3b',
 '0.0.14-version-fix',
 '0.0.1a1.incremental',
 '0.0.1dev.dev',
 '0.0.1r-apha-jedyais',
 '0.0.1r001a-apha-akyie',
 '0.0.1r001a-yusut-bozlon',
 '0.0.1r004-apha-chyctu',
 '0.0.2-test',
 '0.0.3-test',
 '0.0.3a-1-g61ef',
 '0.0.4-alphadev',
 '0.0.4-develop-1-g07c2bdb',
 '0.0.4-test',
 '0.0.5-c7b30905ec1b',
 '0.0.5-test',
 '0.0.6-test',
 '0.0.7-test',
 '0.0.7.1.gcab1eb0',
 '0.0.post1-359fbc961cce',
 '0.0.post1-359fbc961cce-20120130',
 '0.0.post2-92ce1ca782a7-20120219',
 '0.0.post5-ac5a33a1b087',
 '0.00-alfa',
 '0.001 alpha',
 '0.01-alfa',
 '0.01-prealpha',
 '0.01prea',
 '0.02-alfa',
 '0.02-prealpha',
 '0.03-alfa',
 '0.03-prealpha',
 '0.04-alfa',
 '0.04-prealpha',
 '0.05-alfa',
 '0.06-alfa',
 '0.07-alfa',
 '0.08-alfa',
 '0.09-alfa',
 '0.0b59bb228b062ead4b1080af280859865d718baf',
 '0.0~pre0',
 '0.0~pre1',
 '0.0~pre2',
 '0.0~pre3',
 '0.0~pre4',
 '0.1 alpha',
 '0.1 beta',
 '0.1(alpha)',
 '0.1-1-SVN71dev-r71',
 '0.1-1-ge676',
 '0.1-12-gb4c5',
 '0.1-13-ge91f',
 '0.1-15-gb88c',
 '0.1-16-ga05b',
 '0.1-17-ga411',
 '0.1-2-gf7bf',
 '0.1-20120203031012-fac30d9',
 '0.1-20130513.try2',
 '0.1-20130513.try3',
 '0.1-23-g5cf0',
 '0.1-28-gd3ab',
 '0.1-3-gf933',
 '0.1-4-gb7c4',
 '0.1-6-g16ca',
 '0.1-7-ga199',
 '0.1-alphadev',
 '0.1-bulbasaur',
 '0.1-charmander',
 '0.1-devel',
 '0.1-develop',
 '0.1-dirty',
 '0.1-dvl',
 '0.1-git',
 '0.1-prerelease',
 '0.1-step01',
 '0.1-step02',
 '0.1-step03',
 '0.1-step04',
 '0.1-step05',
 '0.1-step06',
 '0.1-step07',
 '0.1-step08',
 '0.1-step09',
 '0.1-step10',
 '0.1-test',
 '0.1-trunk (r12174M)',
 '0.1-trunk (r12180)',
 '0.1-unreleased',
 '0.1.0-1-gb0ce99a8',
 '0.1.0-4da047477130',
 '0.1.0-test',
 '0.1.0.1.ge72b11e',
 '0.1.0.dev-1edddad',
 '0.1.0.dev-2be7de8',
 '0.1.0.dev-3ebcae0',
 '0.1.0.dev-40ec104',
 '0.1.0.dev-81ba3bd',
 '0.1.0.dev-a91e8ab',
 '0.1.0.dev-abb4137',
 '0.1.0.dev-c770a5c',
 '0.1.0.dev-fea5c40',
 '0.1.0a1-1-gb775',
 '0.1.0a1-14-g4f3a0',
 '0.1.0a1-2-g4bbb',
 '0.1.0a1-2-g4bef',
 '0.1.0a1-2-gb7a5',
 '0.1.0a1-3-geb60',
 '0.1.0a1-4-gaf34',
 '0.1.0a1-6-g81ec',
 '0.1.1-1-gde998f7',
 '0.1.1-2-g4cfe',
 '0.1.1-dirty',
 '0.1.1-hotfix',
 '0.1.1.Galahad',
 '0.1.1.dev1.g3ef6d64',
 '0.1.1.dev19.g77dc946',
 '0.1.10-develop-1-g4313cee',
 '0.1.10-develop-2-g6fab4dd',
 '0.1.10-develop-2-geff34d9',
 '0.1.11-10-gb4c7772',
 '0.1.12-dirty',
 '0.1.129.master.2c5d79a4994eb99e',
 '0.1.13-develop-3-gc5771bf',
 '0.1.132.master.a22db4ab9f5cffb6',
 '0.1.1392763202.8711ee0',
 '0.1.1394485726.c912d9d',
 '0.1.1394510860.0e3df3f',
 '0.1.1394564324.f820ec1',
 '0.1.13hg1085',
 '0.1.13hg1100',
 '0.1.13hg1162',
 '0.1.14-dirty',
 '0.1.15-develop',
 '0.1.15.cc7c6a42843d',
 '0.1.17-develop-1-gd5096b4',
 '0.1.1alfa',
 '0.1.2-13-gd80e268',
 '0.1.2-14-g25f31eb',
 '0.1.2-16-ge4cbbd0',
 '0.1.2-2-g2688fe1',
 '0.1.2-20-g7d715db',
 '0.1.2-22-g4d377fd',
 '0.1.2-23-g8166e7e',
 '0.1.2-24-gf625d5d',
 '0.1.2-3-g03bdf84',
 '0.1.2-4-g28ca55d',
 '0.1.2-hotfix',
 '0.1.2-r15-428b6a8754a6dbf650c8cc0c68342596e119b2d9',
 '0.1.2.Galahad',
 '0.1.2.dev1.g3ef6d64',
 '0.1.21-nmu2',
 '0.1.2alfa',
 '0.1.3-1-g8a5aa39',
 '0.1.3-develop',
 '0.1.3-develop-1-ga568a73',
 '0.1.3-django1.5',
 '0.1.3-django1.5-',
 '0.1.3-django1.5a',
 '0.1.3-unreleased',
 '0.1.3.SVN-67',
 '0.1.3.svn70',
 '0.1.3alfa',
 '0.1.3fix1',
 '0.1.3test6',
 '0.1.4-ned14',
 '0.1.4.19c153a8698c',
 '0.1.4.svn78',
 '0.1.41-develop',
 '0.1.4alfa',
 '0.1.5-develop',
 '0.1.5-unreleased',
 '0.1.5.post4.g32ecf43',
 '0.1.5.svn92',
 '0.1.6.svn92',
 '0.1.6.svn96',
 '0.1.6hg750',
 '0.1.7\n',
 '0.1.8-1-gd421df1',
 '0.1.8.61e2fbf79b11',
 '0.1.Galahad',
 '0.1.a13.g819e98a',
 '0.1.a28.g0c584bc',
 '0.1.alphadev',
 '0.1.bzr286',
 '0.1.bzr327',
 '0.1.bzr368',
 '0.1.bzr381',
 '0.1.bzr396',
 '0.1.bzr409',
 '0.1.bzr423',
 '0.1.bzr434',
 '0.1.bzr482',
 '0.1.bzr485',
 '0.1.bzr496',
 '0.1.dev0dev-20131031',
 '0.1.dev38d5bf3',
 '0.1.dev3b59b34',
 '0.1.dev5ec6238',
 '0.1.devdf66fa9',
 '0.1.devel.0',
 '0.1.git-15b6a053e230f4676b2d0ecfa88d4a37e5a9d26f',
 '0.1.rec68f42a975e',
 '0.1.svn-devel.02',
 '0.10-alfa',
 '0.10.0.git-ce3ec2d',
 '0.10.0_1.0.0a_1',
 '0.10.0_rc1',
 '0.10.2.34.dbe993599c08',
 '0.10.dev-fork-renderer.3',
 '0.10.dev-fork-renderer.4',
 '0.10.dev-fork-renderer.6',
 '0.10.dev-fork-renderer.7',
 '0.11-alfa',
 '0.11-distutils',
 '0.11.0.48.b5865c2b46fb',
 '0.11.5next-156-2da876d',
 '0.11.dev10-g64ac6',
 '0.11.dev11-g64ac6',
 '0.12 beta1',
 '0.12 beta2',
 '0.12-alfa',
 '0.13.0_1.0.0g_1',
 '0.13.0_1.0.0j_1',
 '0.13.0_1.0.1c_1',
 '0.15-1-gbbb8b32',
 '0.18 "Catty And The Major"',
 '0.18-alfa',
 '0.18bdist-egg',
 '0.18sdist',
 '0.19 "Nose Furnace"',
 '0.19-alfa',
 '0.1_alpha1',
 '0.1_alpha2',
 '0.1_beta1',
 '0.1_beta2',
 '0.1_beta3',
 '0.1_dev',
 '0.1_pre',
 '0.1_rc1',
 '0.1_rc2',
 '0.1a1-r3-ac7a',
 '0.1a3~1.4',
 '0.1a4_1.4',
 '0.1adev',
 '0.1adev-20100423',
 '0.1adev-r103973',
 '0.1adev-r1651',
 '0.1adev-r430',
 '0.1alfa',
 '0.1alpha-svn20090515',
 '0.1alpha.svn20080501',
 '0.1alphadev',
 '0.1b.trunk-r12200-12205',
 '0.1b.trunk-r12205',
 '0.1b.trunk-r12385',
 '0.1bdev',
 '0.1bdev-r6471',
 '0.1bdev-r6615',
 '0.1cdev-r6615',
 '0.1deva',
 '0.1devel',
 '0.1development',
 '0.1dvl',
 '0.1plan',
 '0.1r2dev-r2',
 '0.1r3dev-r8',
 '0.1release',
 '0.1sdist',
 '0.2-15-gc6cc-mod',
 '0.2-29-gbd62f7d',
 '0.2-30-g69f6-mod',
 '0.2-Zope2.9dev',
 '0.2-alpha(5)',
 '0.2-devdev-20110715',
 '0.2-devdev-20131220',
 '0.2-develop-5-gd261532',
 '0.2-grigoropoulos',
 '0.2.0 alpha',
 '0.2.0-Preview',
 '0.2.0.build.7.12.2013.15.50',
 '0.2.0.build.7.12.2013.16.28',
 '0.2.1 beta',
 '0.2.1-1-g2fbf',
 '0.2.1-1-g9ce6',
 '0.2.1-Novell',
 '0.2.1-unstable',
 '0.2.10 alpha',
 '0.2.10-1-ge48e',
 '0.2.11-1-g87fc',
 '0.2.137.default.a9b6c943131e',
 '0.2.143.default.353819b193bc.default-master-master-tip',
 '0.2.17-2-gec7b',
 '0.2.176.default.3499b00918ca.tip',
 '0.2.1alfa',
 '0.2.1dev_r48',
 '0.2.2-2-g093d800-dirty',
 '0.2.2-3-gf68d50b',
 '0.2.2-devdev-20111209',
 '0.2.2-devel',
 '0.2.20-1-gd225',
 '0.2.21-3-gc6a8',
 '0.2.22.post5.ge91ce31',
 '0.2.24-5-gc365',
 '0.2.27-dirty',
 '0.2.2dev_r54',
 '0.2.3\n',
 '0.2.3-10-ge662',
 '0.2.3-11-g7d5d',
 '0.2.3-12-gd3b4',
 '0.2.3-13-g5df5',
 '0.2.3-4-ga917',
 '0.2.3-8-gc052',
 '0.2.3-devel',
 '0.2.30-dirty',
 '0.2.4b\n0.2.5b',
 '0.2.5 (deprecated - see pprocess)',
 '0.2.5-develop-32-g0fbf6b0',
 '0.2.5-develop-36-g8b3bbb6',
 '0.2.5-dirty',
 '0.2.7-3-g87cd',
 '0.2.8-11-g5fc0',
 '0.2.Perceval',
 '0.2.beta.git',
 '0.20-alfa',
 '0.20.2.1.devheroku',
 '0.20.2.1.devherokuprefixer',
 '0.21-alfa',
 '0.22-alfa',
 '0.23-alfa',
 '0.23.382.91a1bf8618cd',
 '0.24-alfa',
 '0.26-alfa',
 '0.26.390.a484c9c2e18c',
 '0.26unleak',
 '0.27-alfa',
 '0.2_alpha1',
 '0.2_alpha2',
 '0.2_alpha3',
 '0.2adev',
 '0.2alfa',
 '0.2bdev',
 '0.2devdev',
 '0.2devdev-r10',
 '0.2devdev-r19612',
 '0.2devdev-r86018',
 '0.2r58dev-r58',
 '0.2sdist',
 '0.3 beta 0',
 '0.3-SNAPSHOT',
 '0.3-SNAPSHOT-r1389',
 '0.3-kamalmaz',
 '0.3.0.Grape',
 '0.3.0dev_r55',
 '0.3.0dev_r56',
 '0.3.0dev_r70',
 '0.3.0dev_r80',
 '0.3.0dev_r81',
 '0.3.0dev_r88',
 '0.3.0devdev-20100622',
 '0.3.0patch1',
 '0.3.1-10-gdf9c43e',
 '0.3.1-2-g21f58cc',
 '0.3.1-2-gf85f17b',
 '0.3.1-3-ge1f1f50',
 '0.3.1-kamalmaz',
 '0.3.18.post1.g8c90ea5',
 '0.3.1adev',
 '0.3.1bdev',
 '0.3.2-3-ga114a00',
 '0.3.2-4-g899d4d7',
 '0.3.2-mod',
 '0.3.2.svn34',
 '0.3.2adev',
 '0.3.3.git-e7443f1',
 '0.3.3adev',
 '0.3.4 Alpha',
 '0.3.4.git-c57b020',
 '0.3.5-1-g754f89f',
 '0.3.5-3-ge021b42',
 '0.3.5.git-791ba6f',
 '0.3.5.post2.gc0b147d',
 '0.3.5lish',
 '0.3.6-1-gfedc645',
 '0.3.6-2-g00fcda5',
 '0.3.6.git-dd2c96a',
 '0.3.a1.gcb84ceb',
 '0.30.400.cee08e90870c',
 '0.3_alpha1',
 '0.3_alpha3',
 '0.3_alpha4',
 '0.3adev',
 '0.3alphadev',
 '0.3bdev',
 '0.3betadev',
 '0.3pre-27a645a3158d-dev',
 '0.3pre-9609c1e38c14',
 '0.3sdist',
 '0.4-SNAPSHOT',
 '0.4-git',
 '0.4-simple',
 '0.4.0.Pineapple',
 '0.4.0pr0',
 '0.4.0pr1',
 '0.4.1-dirty',
 '0.4.1.dev2.gf7f67dc',
 '0.4.1.jurko.1',
 '0.4.1.jurko.2',
 '0.4.1.jurko.3',
 '0.4.1.jurko.4',
 '0.4.1.jurko.5',
 '0.4.11.post1.gd2e0b2a',
 '0.4.11.post2.g89deb64',
 '0.4.11~rc1',
 '0.4.11~rc2',
 '0.4.12bdev-r70',
 '0.4.13.e7a3fe35ddf1',
 '0.4.130-1-g879bec5',
 '0.4.134-116-g9cc2e91-saga-python',
 '0.4.134-136-g5bd8a41-saga-python',
 '0.4.134-145-g2718997-saga-python',
 '0.4.134-146-gc592fd7-saga-python',
 '0.4.134-147-g2aac55e-saga-python',
 '0.4.134-148-g02d90e7-saga-python',
 '0.4.134-150-g9da7117-saga-python',
 '0.4.134-151-gfc1108a-saga-python',
 '0.4.134-152-g04b31d3-saga-python',
 '0.4.134-168-gb7cc8dc-saga-python',
 '0.4.134-169-gc6a1e53-saga-python',
 '0.4.134-170-g78487a5-saga-python',
 '0.4.2-jython',
 '0.4.2-jython-py2.5',
 '0.4.5-develop-3-gac1e4bf',
 '0.4.8.-UNRELEASED-SVN-',
 '0.4.a13.gd65dfd2',
 '0.4.a16.g951c4a4',
 '0.4.a28.g0c584bc',
 '0.4.dev21.gfa1112a',
 '0.4.dev22.gde2fe8a',
 '0.4.dev29.gb604344',
 '0.4.dev30.g4cc4dd9',
 '0.4.dev34.g5272a0a',
 '0.4.dev35.g5b1da5e',
 '0.4.dev36.ga07f1c1',
 '0.4.post3-f1f5f604f2f0-20110127',
 '0.4_pre-alpha',
 '0.4sdist',
 '0.4stfd16447e',
 '0.5-python',
 '0.5.0 Final',
 '0.5.0-31-ge3b7d99',
 '0.5.0-32-ga9ccae7',
 '0.5.0-fix',
 '0.5.1-0107cd02',
 '0.5.1-svn',
 '0.5.10.post2.geb3de2f',
 '0.5.11.post1.gf5c8e4c',
 '0.5.12+r17222',
 '0.5.13-hg',
 '0.5.2 Alpha',
 '0.5.2-karmic',
 '0.5.2-rf1',
 '0.5.2.3-seecr-1',
 '0.5.2next',
 '0.5.3-karmic',
 '0.5.31+r17222',
 '0.5.4-develop-4-gbe53665',
 '0.5.5.ipp',
 '0.5.6-67fd7',
 '0.5.6-develop-2-g7dcb929',
 '0.5.7-ea983',
 '0.5.7.ipp',
 '0.5.8-develop-1-g21d9689',
 '0.5.8.post4.g07adcbb',
 '0.5.8pp',
 '0.5.9-11-gab5c928',
 '0.50 alpha',
 '0.50b-10-gfdf8243',
 '0.50b-8-g5aeee52',
 '0.52-12-g8bfd54b',
 '0.54-1-g6531aad',
 '0.54-17-g6bc7aec',
 '0.54-24-gf53e90b',
 '0.54-25-g2a012bd',
 '0.54-3-g2c96be7',
 '0.54-42-g09ea8bc',
 '0.6\n',
 '0.6+git08dec97',
 '0.6-python',
 '0.6-test',
 '0.6.0 stable',
 '0.6.0-26-gcd3c8d2',
 '0.6.1-ecc33',
 '0.6.1-fix',
 '0.6.1-fix2',
 '0.6.1.fix',
 '0.6.1.release',
 '0.6.1b stable',
 '0.6.2-6cec2',
 '0.6.2-iis-experimental',
 '0.6.2-seecr-0',
 '0.6.2-test1',
 '0.6.2-test2',
 '0.6.2-test3',
 '0.6.2.release',
 '0.6.22+r17222',
 '0.6.4-dc796',
 '0.6.6-0cec0',
 '0.6.dev.4722cdf',
 '0.61bdev',
 '0.62bdev',
 '0.66 "Train"',
 '0.6989ev',
 '0.6_0',
 '0.6adev',
 '0.6bdev',
 '0.7(1)',
 '0.7(2)',
 '0.7(3)',
 '0.7-python',
 '0.7.0.release',
 '0.7.0_0.9.8h_1',
 '0.7.0_0.9.8i_1',
 '0.7.1-20110810-full',
 '0.7.1-RELEASE',
 '0.7.1-python',
 '0.7.1.0-freerunner0',
 '0.7.1.fix1',
 '0.7.1.release',
 '0.7.2-20110827-full',
 '0.7.2-fork-webassets2.1',
 '0.7.2-fork-webassets2.2',
 '0.7.2-fork-webassets2.3',
 '0.7.2-fork-webassets2.4',
 '0.7.2-python',
 '0.7.2.1 dev',
 '0.7.3-20110922-full',
 '0.7.4.svn.r2010',
 '0.7.45.ef2bcecee08d',
 '0.71 dev',
 '0.71bdev',
 '0.75-dev-update',
 '0.7921cba85c0c51a931e648ba2c29843f8320d5e7',
 '0.7bdev',
 '0.8-20111128-full',
 '0.8.0-RELEASE',
 '0.8.0-python',
 '0.8.0.1-freerunner0',
 '0.8.0.3-freerunner0',
 '0.8.0.4-freerunner0',
 '0.8.0.svn29',
 '0.8.0_0.9.8i_1',
 '0.8.0pr1',
 '0.8.1-20111209-full',
 '0.8.1-python',
 '0.8.1_0.9.8j_1',
 '0.8.1_0.9.8j_2',
 '0.8.2-20111217-full',
 '0.8.2-python',
 '0.8.3-eol',
 '0.8.3-python',
 '0.8.3.dev2-g9c0eaf9',
 '0.8.4-python',
 '0.8.5-1-g3b5b',
 '0.8.5-python',
 '0.8.6-python',
 '0.8.9-pre-351-ge145f02',
 '0.8.dev1-3c3e5fc8d549',
 '0.8.dev23-ge66e3',
 '0.81adev',
 '0.81bdev',
 '0.82adev',
 '0.82bdev',
 '0.83adev',
 '0.84adev',
 '0.85adev',
 '0.8adev',
 '0.8bdev',
 '0.9 beta',
 '0.9-doduo',
 '0.9-eevee',
 '0.9-fearow',
 '0.9-gyarados',
 '0.9-horsea',
 '0.9-ivysaur',
 '0.9-wip',
 '0.9.0-RELEASE',
 '0.9.0-SNAPSHOT',
 '0.9.0.RC1.SVN-2580',
 '0.9.0.RC2.svn2609',
 '0.9.0.RC3.git-fbba4c7',
 '0.9.0.RC4.git-be75d96',
 '0.9.0.RC5.git-87dd033',
 '0.9.0.git-2c2330a',
 '0.9.07.2.test1',
 '0.9.07.3.test1',
 '0.9.0_0.9.8k_1',
 '0.9.0_0.9.8l_1',
 '0.9.0~rc1',
 '0.9.0~rc10',
 '0.9.0~rc2',
 '0.9.0~rc3',
 '0.9.0~rc4',
 '0.9.0~rc5',
 '0.9.0~rc6',
 '0.9.0~rc7',
 '0.9.0~rc8',
 '0.9.0~rc9',
 '0.9.1-RELEASE',
 '0.9.1_beta',
 '0.9.2 (bug fix release)',
 '0.9.2_beta',
 '0.9.3 final',
 '0.9.3-py2x',
 '0.9.33+r17222',
 '0.9.3_1',
 '0.9.3_beta',
 '0.9.4svn',
 '0.9.6.1gg',
 '0.9.8-svn',
 '0.9.8adev',
 '0.91bdev',
 '0.92bdev',
 '0.93bdev',
 '0.94.3-openstack',
 '0.99.2dev-384-2b73caca',
 '0.990c613daa19960e8a900cbffc5472e44282b6f1',
 '0.99f5191420dd2749efb3a7c54a9280183983f485',
 '0.9b-py2x',
 '0.9b-py3k',
 '0.9bdev',
 '0.9dev-BZR-r1-panta-elasticworld.org-20091022172439-fmwzw3p7h18le544',
 '0.9dev-BZR-r1-panta-elasticworld.org-20110427165731-j00nsiss2af57yhu',
 '0.9dev-BZR-r10-panta-elasticworld.org-20081216152624-sz5xilgbk42aqw1n',
 '0.9dev-BZR-r11-panta-elasticworld.org-20081218144309-va357v4g5xnr7y92',
 '0.9dev-BZR-r12-panta-elasticworld.org-20081218151859-iaru5c35s5q8sz9t',
 '0.9dev-BZR-r15-panta-elasticworld.org-20081219124947-6izi6h22ttmjaaxm',
 '0.9dev-BZR-r16-panta-elasticworld.org-20090108095331-cbbch6rqni2vifaa',
 '0.9dev-BZR-r19-panta-elasticworld.org-20090222110141-nzsekfoqkvcunfwr',
 '0.9dev-BZR-r2-panta-elasticworld.org-20091022174904-rzl3fhi5cimftxtw',
 '0.9dev-BZR-r20-panta-elasticworld.org-20090304132437-1sq0ppjh7kakrndc',
 '0.9dev-BZR-r22-panta-elasticworld.org-20090315100838-qmi482ez1kn0xn97',
 '0.9dev-BZR-r23-panta-elasticworld.org-20090317192744-od4jr0rafecsxd3w',
 '0.9dev-BZR-r26-panta-elasticworld.org-20090315102703-8wju3l8unzmx2uvp',
 '0.9dev-BZR-r3-panta-elasticworld.org-20091022181215-3nbknm8vmfpngs70',
 '0.9dev-BZR-r30-panta-elasticworld.org-20090908153805-sx9kcy75r80xskdy',
 '0.9dev-BZR-r31-panta-elasticworld.org-20090925164307-eirxfejhlbft53s8',
 '0.9dev-BZR-r32-panta-elasticworld.org-20091007073838-blwn3aer3fpdh3bf',
 '0.9dev-BZR-r33-panta-elasticworld.org-20091021152850-jlekcpgm5x5a9get',
 '0.9dev-BZR-r34-panta-elasticworld.org-20091021152229-fm6moqh61fhrlqr9',
 '0.9dev-BZR-r35-panta-elasticworld.org-20091111104734-7mltb3cdb53mjtl9',
 '0.9dev-BZR-r36-panta-elasticworld.org-20091026161236-ncn99jjafeksdjkc',
 '0.9dev-BZR-r36-panta-elasticworld.org-20091216090517-3o494s4iearpm0rw',
 '0.9dev-BZR-r37-panta-elasticworld.org-20091110103112-cilkf24f2o503tkm',
 '0.9dev-BZR-r39-panta-elasticworld.org-20091111113416-ir4wlgfmp5lp6m69',
 '0.9dev-BZR-r41-panta-elasticworld.org-20100224160218-ekf7vb0w9fx9318y',
 '0.9dev-BZR-r42-panta-elasticworld.org-20100224161224-s4w9o9n2t6pllcha',
 '0.9dev-BZR-r43-panta-elasticworld.org-20100224162511-0bctvwyi62hpopdb',
 '0.9dev-BZR-r44-panta-elasticworld.org-20100224164322-otsbzj0xv63dh4u4',
 '0.9dev-BZR-r45-panta-elasticworld.org-20100226104545-conueyo0alu35zm4',
 '0.9dev-BZR-r46-panta-elasticworld.org-20100301175748-ecls2dwys4lpjtwf',
 '0.9dev-BZR-r47-panta-elasticworld.org-20100302103836-4q6st6r4t667zcr8',
 '0.9dev-BZR-r8-panta-elasticworld.org-20091111104900-tj54rjt5f0biy1hc',
 '0.9dev-BZR-r9-panta-elasticworld.org-20081216120255-bfxtvm59se53cu9k',
 '0.a7e089858d93a47c39106be72eadde3ed53cadf4-dev',
 '0.bbc5e6c4200f93f73ece40a626d939dc1a25a973-dev',
 '0.hg15',
 '0.hg18',
 '0.ut.09s',
 '02 Jun 2010',
 '1 (first draft)',
 '1,0,0',
 '1,1,0',
 '1-0_Final',
 '1-666-12-newfinalrc1',
 '1-cdh3u2',
 '1-cdh4.1.3',
 '1-cdh4.3.0',
 '1.*',
 '1.0 Beta',
 '1.0 RC 1',
 '1.0 beta',
 '1.0 rv 2007-06-19',
 '1.0(beta)',
 '1.0,0',
 '1.0-betadev-r51834',
 '1.0-preview',
 '1.0-rc-II.dev',
 '1.0-release',
 '1.0.-svn-unreleased-',
 '1.0.0-1-g05de105',
 '1.0.0-10-g618f3fa',
 '1.0.0-5-gd898a62',
 '1.0.0-8-g25bd73f',
 '1.0.0-SNAPSHOT',
 '1.0.0-beta-red1',
 '1.0.0-poc.dev295.g748a9ad',
 '1.0.0-preview',
 '1.0.0-preview2',
 '1.0.0-release',
 '1.0.0.RELEASE',
 '1.0.0.a6.g53e06ae',
 '1.0.0.alpha (Ninken)',
 '1.0.0Update1',
 '1.0.0Update2',
 '1.0.0b1_wrapper2',
 '1.0.0bdev-r230355',
 '1.0.0pr1',
 '1.0.0pr10',
 '1.0.0pr11',
 '1.0.0pr12',
 '1.0.0pr14',
 '1.0.0pr15',
 '1.0.0pr2',
 '1.0.0pr3',
 '1.0.0pr4',
 '1.0.0pr5',
 '1.0.0pr6',
 '1.0.0pr7',
 '1.0.0pr8',
 '1.0.0pr9',
 '1.0.0qt472',
 '1.0.1\n',
 '1.0.1 beta',
 '1.0.1-renamed-to-createcoverage',
 '1.0.1qt472',
 '1.0.2 dev',
 '1.0.2-2685-py3.2',
 '1.0.2.gc158951',
 '1.0.22-unbroken',
 '1.0.2qt472',
 '1.0.3-2728-py2.7',
 '1.0.3-2728-py3.2',
 '1.0.3-2729-py2.7',
 '1.0.3-2729-py3.2',
 '1.0.3-SNAPSHOT',
 '1.0.30+',
 '1.0.3qt473',
 '1.0.42+',
 '1.0.4qt473',
 '1.0.50+',
 '1.0.5qt473',
 '1.0.60:61',
 '1.0.61:62',
 '1.0.62:63',
 '1.0.67+',
 '1.0.69+',
 '1.0.6qt473',
 '1.0.6qt474',
 '1.0.7qt474',
 '1.0.9qt474',
 '1.01b1+encoding_patch+removed_django_depends',
 '1.0a1.-svn-unreleased-',
 '1.0a1a',
 '1.0adev',
 '1.0adev-r84866',
 '1.0adev-r84868',
 '1.0beta5prerelease',
 '1.0beta5prerelease2',
 '1.0dev-BZR-r10-panta-elasticworld.org-20091023132843-vitk6k7e5qlvhej5',
 '1.0dev-BZR-r101-panta-elasticworld.org-20091118083244-inh0tj0d73fcdz14',
 '1.0dev-BZR-r102-panta-elasticworld.org-20100219074447-0jgstkbnpansadps',
 '1.0dev-BZR-r103-panta-elasticworld.org-20100219080001-n217vif76rnpstai',
 '1.0dev-BZR-r104-panta-elasticworld.org-20100219081117-8qu2ngmwluuab2ym',
 '1.0dev-BZR-r105-panta-elasticworld.org-20100219154414-9erbqfuchgedif70',
 '1.0dev-BZR-r106-panta-elasticworld.org-20100219165140-txgp1aqdqrm37swu',
 '1.0dev-BZR-r107-panta-elasticworld.org-20100223155814-mz3epxorhsotne0o',
 '1.0dev-BZR-r108-panta-elasticworld.org-20100223160746-362tylcagne0645h',
 '1.0dev-BZR-r109-panta-elasticworld.org-20100224171922-2a2lvujx3dkleapv',
 '1.0dev-BZR-r110-panta-elasticworld.org-20100228164056-obyku2vp4ng1xbod',
 '1.0dev-BZR-r111-panta-elasticworld.org-20100228164942-7nfmukb7dc2e8ed6',
 '1.0dev-BZR-r112-panta-elasticworld.org-20100308150938-mhesfprnhwga5won',
 '1.0dev-BZR-r113-panta-elasticworld.org-20100514074609-v4iupfyoiupd8jpx',
 '1.0dev-BZR-r115-panta-elasticworld.org-20100520155735-sf3yrsr0pvyvlm8m',
 '1.0dev-BZR-r2-panta-elasticworld.org-20090225204424-1s4lx8ne4puxgm4v',
 '1.0dev-BZR-r27-panta-elasticworld.org-20081124161349-ba12ilp9g4q71isk',
 '1.0dev-BZR-r28-panta-elasticworld.org-20081124161947-mblyrz0f4izbu9c7',
 '1.0dev-BZR-r29-panta-elasticworld.org-20081124163210-8du527femssj13ox',
 '1.0dev-BZR-r3-panta-elasticworld.org-20090226085823-zt67i19g5dqpp8ld',
 '1.0dev-BZR-r30-panta-elasticworld.org-20081124172142-giwtywku73lo8ksy',
 '1.0dev-BZR-r31-panta-elasticworld.org-20081124212301-b48f3cpe8jw737na',
 '1.0dev-BZR-r32-panta-elasticworld.org-20081216123746-27ou118wthuzrnsb',
 '1.0dev-BZR-r33-panta-elasticworld.org-20081211100211-4mfujx2caqli3dka',
 '1.0dev-BZR-r33-panta-elasticworld.org-20081216153619-v4ejdq9onvtrqkia',
 '1.0dev-BZR-r34-panta-elasticworld.org-20081216131356-smv4nkyb7t6lq0dg',
 '1.0dev-BZR-r35-panta-elasticworld.org-20081217101049-st8sar058ur36g6i',
 '1.0dev-BZR-r35-panta-elasticworld.org-20081217105838-wg2o50uwu3sj5102',
 '1.0dev-BZR-r36-panta-elasticworld.org-20081217101134-9m0nzk4d8mqhuxdu',
 '1.0dev-BZR-r36-panta-elasticworld.org-20081217150526-zwtaa8phx7wbufdk',
 '1.0dev-BZR-r37-panta-elasticworld.org-20081217101306-eo4gz8f5vr1kfear',
 '1.0dev-BZR-r39-panta-elasticworld.org-20081219125050-dvyhd6a4s9nfsjr7',
 '1.0dev-BZR-r39-panta-elasticworld.org-20090225205004-k1t3ax25kpi8qem6',
 '1.0dev-BZR-r4-panta-elasticworld.org-20090226115223-ze0pe06stmv8m3y0',
 '1.0dev-BZR-r40-panta-elasticworld.org-20090108095450-sq8sz20twuagiob1',
 '1.0dev-BZR-r40-panta-elasticworld.org-20090226145945-5jo0t55igg503f28',
 '1.0dev-BZR-r41-panta-elasticworld.org-20091021142923-1pr063zdcx4129ba',
 '1.0dev-BZR-r42-panta-elasticworld.org-20091021153851-6ijlut5dkxndxw1h',
 '1.0dev-BZR-r45-panta-elasticworld.org-20091021145839-1oceeh3stpvyl04t',
 '1.0dev-BZR-r58-panta-elasticworld.org-20081216105351-jtcw0uz2nrh3mw59',
 '1.0dev-BZR-r6-panta-elasticworld.org-20090226151421-7ebqznla8toidrcr',
 '1.0dev-BZR-r60-panta-elasticworld.org-20081216172358-5t5c0uj4vly6w5b8',
 '1.0dev-BZR-r61-panta-elasticworld.org-20081216105417-7eujtvxt76r11345',
 '1.0dev-BZR-r61-panta-elasticworld.org-20081217095906-xaeh546bdhryet5s',
 '1.0dev-BZR-r62-panta-elasticworld.org-20081218081630-5bojyfg2oas1gadq',
 '1.0dev-BZR-r62-panta-elasticworld.org-20081219124017-sg36t76fi229lmi2',
 '1.0dev-BZR-r63-panta-elasticworld.org-20081218083608-x8dni1f2f655umvc',
 '1.0dev-BZR-r64-panta-elasticworld.org-20081218083848-3ngh9p7prpykajbl',
 '1.0dev-BZR-r65-panta-elasticworld.org-20081218084706-ggvc8v24w96cn22v',
 '1.0dev-BZR-r67-panta-elasticworld.org-20081219124915-gti7fix9mhbtas9m',
 '1.0dev-BZR-r7-panta-elasticworld.org-20090226154532-2n1eu3yzuc1n921k',
 '1.0dev-BZR-r77-panta-elasticworld.org-20090222105922-yunn2pjd0i7pyn8j',
 '1.0dev-BZR-r78-panta-elasticworld.org-20090220163103-cqfs90iwgbtr7i4i',
 '1.0dev-BZR-r78-panta-elasticworld.org-20090304151556-lciccjm9w2sfzvdw',
 '1.0dev-BZR-r79-panta-elasticworld.org-20090315110601-h3lbc2s0nqppsr2d',
 '1.0dev-BZR-r79-panta-elasticworld.org-20090316230356-bp41wibodhmypvep',
 '1.0dev-BZR-r8-panta-elasticworld.org-20090316131542-al2mtd6m3qq0gxhb',
 '1.0dev-BZR-r84-panta-elasticworld.org-20091007073637-gfco7xjadyly592r',
 '1.0dev-BZR-r85-panta-elasticworld.org-20091013172434-v5h4f2kata25529p',
 '1.0dev-BZR-r86-panta-elasticworld.org-20091021152548-zgoskpkrxyu8fzpr',
 '1.0dev-BZR-r88-panta-elasticworld.org-20091111104606-5frfch9m65s5r595',
 '1.0dev-BZR-r9-panta-elasticworld.org-20091021153500-4lizflzoosduc1xs',
 '1.0dev-BZR-r90-panta-elasticworld.org-20091124105334-sfii6ytnur3a7aec',
 '1.0dev-BZR-r92-panta-elasticworld.org-20090924163715-k81uz0bct3qho4fb',
 '1.0dev-BZR-r92-panta-elasticworld.org-20100503154915-oquvw7cswbvwnrvs',
 '1.0dev-BZR-r93-panta-elasticworld.org-20091007072131-hkxrfwm2yte2i7cl',
 '1.0dev-BZR-r94-panta-elasticworld.org-20091012101806-vxojpke276lrfjxp',
 '1.0dev-BZR-r95-panta-elasticworld.org-20091014173423-66sot6gufg3ztjug',
 '1.0dev-BZR-r96-panta-elasticworld.org-20091019141028-k6lcxynczaw5eaa0',
 '1.0dev-BZR-r97-panta-elasticworld.org-20091021151434-93c8fqnkdph1gdxy',
 '1.0dev-BZR-r98-panta-elasticworld.org-20091108100831-f6s0u6xoa8j4jq16',
 '1.0dev-BZR-r99-panta-elasticworld.org-20091108103118-d0qlvtj52q236au0',
 '1.1 beta',
 '1.1-.master-d9b2381',
 '1.1-release',
 '1.1.-svn-unreleased-',
 '1.1.0-2-g555364d-dirty',
 '1.1.0-2-gbdb2b6f',
 '1.1.0-extjs4.1.1',
 '1.1.0.a14.ga357098',
 '1.1.0.post2.g81dc42a',
 '1.1.0qt474',
 '1.1.1-extjs4.1.1',
 '1.1.15-grammar-nazi',
 '1.1.1qt474',
 '1.1.2-1-gf4db705',
 '1.1.2-2-g543d478-dirty',
 '1.1.2-extjs4.1.1',
 '1.1.3-1-gc837b73',
 '1.1.3-extjs4.1.1',
 '1.1.4-extjs4.1.1',
 '1.1.producion',
 '1.1.production',
 '1.10.1-pythons2n3',
 '1.10.2-pythons2n3',
 '1.10sdist',
 '1.12_1',
 '1.1adev',
 '1.2 beta 1',
 '1.2-beta2beta',
 '1.2-devel',
 '1.2-peg',
 '1.2.0-extjs4.2.1',
 '1.2.1_p2',
 '1.2.1bugfix-r8',
 '1.2.37syslab1',
 '1.2.5-8-g48aac57-dirty',
 '1.2.5-9-g6f9d63a-dirty',
 '1.2.8-Revision-.3140.-',
 '1.2.production',
 '1.2adev',
 '1.3 beta',
 '1.3-The-Full-Monty',
 '1.3.production',
 '1.3.svn',
 '1.39f12a0e86e50b0895d998c8c5b8d00e80d7abb6',
 '1.3RC3bdev',
 '1.4 beta',
 '1.4-Tasmania-Sunset',
 '1.4-py0',
 '1.4-py1',
 '1.4.1-Refer-And-Defer',
 '1.4.1.production',
 '1.4.6 final',
 '1.4.production',
 '1.4XB',
 '1.4YB',
 '1.4ZB',
 '1.5.0-SNAPSHOT',
 '1.5.0-SNAPSHOT.1',
 '1.5.2-r2.win32',
 '1.5.24.1sdist',
 '1.5WB',
 '1.5XB',
 '1.6.0.multidb',
 '1.6.1-peg',
 '1.6.py3',
 '1.7.6-SNAPSHOT',
 '1.7.7-SNAPSHOT',
 '1.9.0-python3',
 '1.9.2-python3',
 '1.9.2-pythons2n3',
 '1.9.5-aa3',
 '1.9.9.public',
 '1.cc5c453ebfbe00229f6e605f38fb5be824394996',
 '1159aa9',
 '12.05_r521',
 '12.10_r547',
 '12.11_95babb0',
 '12.12_e27456b',
 '13.01_43a0943',
 '13.01_f2bbd24',
 '13.02_a515056',
 '13.03_7f9fc90',
 '13.04.13-gpl-pyqt',
 '13.05_r7',
 '13.06_r1023',
 '13.09_r20',
 '2.0 Beta',
 '2.0-8-ge6ac542',
 '2.0.0_beta_1',
 '2.0.0pr1',
 '2.0.1 dev',
 '2.0.1Update1',
 '2.0.1_beta_2',
 '2.0.1rc2-git',
 '2.0.4betadev-r169',
 '2.0.5ceda.p1',
 '2.0.ecaeca',
 '2.0.rcdev-r55800',
 '2.0.wr1.0.1',
 '2.0.wr1.1.0',
 '2.04-molly1',
 '2.0_beta',
 '2.0_rc1',
 '2.0_rc2',
 '2.0b2Update1',
 '2.0b2Update1.dev-r91-f3fa7b6c3a11',
 '2.1.0.wr1.0.0',
 '2.1.0.wr1.0.1',
 '2.1.0.wr1.0.2',
 '2.1.0.wr1.1.0',
 '2.1.0.wr1.2.0',
 '2.1.1-121-g40acd27',
 '2.1.2-2-ga66bc8c',
 '2.100.July2013',
 '2.2 beta',
 '2.2 beta2',
 '2.2.1\n',
 '2.2.5-datadog',
 '2.3.0-1-g8192c2c',
 '2.3.0-37-g2286acc',
 '2.3.1-1-g3b9b0dd',
 '2.3.1-34-g7acf041',
 '2.3.2-9-ga132adb',
 '2.39.235_1644',
 '2.3aa',
 '2.43.239_1806',
 '2.45.241_1926',
 '2.4prerelease',
 '2.6.2-spatialite.2.3.1',
 '2.6.2-spatialite.2.4.0-4',
 '2008-03-29_r219',
 '2009.11.16.cpp',
 '2009.11.16.py3k.cpp',
 '2009.11.19.py3k.cpp',
 '2009.12.03.py3k.cpp.static',
 '2009.12.05.py3k.cpp.static',
 '2009.12.06.py3k.cpp.static',
 '2009.12.09.py3k.cpp.static',
 '2009.12.24.py3k.cpp',
 '2009.12.30.py3k.cpp',
 '2010.01.01.README',
 '2010.01.21.ast2src',
 '2010.02.06.appengine',
 '2010.02.07.appengine',
 '2011.10.12.11fc9f7',
 '2013-01-21T20:33:09+0100',
 '2013-01-23T17:11:52+0100',
 '2013-02-01T20:50:46+0100',
 '2013-02-02T19:59:03+0100',
 '2013-02-02T20:23:17+0100',
 '2013-02-08T17:40:57+0000',
 '2013-03-27T16:32:26+0100',
 '2013-05-09T12:47:53+0200',
 '2013-05-10T17:55:56+0200',
 '2013-05-14T20:16:05+0200',
 '2013-06-01T10:32:51+0200',
 '2013-07-19T09:11:08+0000',
 '2013-08-12T21:48:56+0200',
 '2013.1.a8.g3a2a320',
 '24-Apr-2013',
 '3-0_beta_2',
 '3.0.1.dev57bb2fdd',
 '3.0.1.dev5949bafa',
 '3.0.2.dev35dd99db',
 '3.0.2.dev97a4acec44',
 '3.0.2.devdc5e859e',
 '3.0.3.dev97a4acec44',
 '3.0_beta_4',
 '3.2.0.10-SNAPSHOT',
 '3.2.0.11-SNAPSHOT',
 '3.2.0.5-SNAPSHOT',
 '3.2.0.6-SNAPSHOT',
 '3.2.0.8-SNAPSHOT',
 '3.2.1-openproximity',
 '3.2.1_2.10',
 '3.2.1_2.10.1',
 '3.2.1_2.8.1',
 '3.2.1_2.9',
 '3.3-svn191928',
 '3.6.0.Unversioned directory',
 '3.9.3zc1',
 '3.9.3zc2',
 '46aca65',
 '5.0.0prealpha',
 '5.0.1prealpha',
 '5.0.2prealpha',
 '5b8fd36',
 '6df0097',
 'April2000',
 'Build-client',
 'DNA MXC 010: ...',
 'FSDump-0.9.4',
 'HEAD',
 'Kenneth Reitz',
 'MIT 1.0',
 'Milestone1',
 'Monty',
 'Octopasty.0.1',
 'PreAlpha',
 'PyVisa 1.4 for Python 3.3.2',
 'Python v2.7',
 'R38 Alfa',
 'SVN-Head',
 'Sysv_ipc gives Python programs access to System V semaphores, shared memory \nand message queues. Most (all?) Unixes (including OS X) support System V IPC. \nWindows+Cygwin 1.7 might also work. \n\nSample code is included.\n\nThis extension is released under the GPL. \n\nYou might also be interested in the similar POSIX IPC module at:\nhttp://semanchuk.com/philip/posix_ipc/',
 'T-0.3.4 (BitTornado)',
 'Trunk',
 'Version 2',
 'Version 3',
 '[In Progress] Python middle layer for interacting with Redis data easily.',
 'aa',
 'all',
 'ba09cd08df55+20090820',
 'beta .001',
 'beta .012',
 'beta .014',
 'beta .015',
 'beta .016',
 'beta .017',
 'beta .019',
 'beta 0.97',
 'beta 005',
 'beta 006',
 'beta 007',
 'beta 008',
 'beta 009',
 'beta 010',
 'beta 011',
 'beta 013',
 'beta 11',
 'beta 4',
 'beta 5',
 'beta 6',
 'beta 8',
 'beta pre csound',
 'beta, 1.0',
 'beta, 1.1',
 'bzr',
 'bzr12',
 'bzr14',
 'bzr4',
 'bzr6',
 'cd.ganna-app-dev',
 'ddcbf16',
 'default',
 'devel',
 'devel-20120307',
 'develop',
 'djgeo',
 'e91fe6b',
 'essex-1.1',
 'f29f51c',
 'git',
 'git-latest',
 'git-unknown',
 'git1',
 'github-devel',
 'gt-3.9.3beta-1.0.8',
 'indev',
 'infinite',
 'k303-q100 code name: virtual',
 'leatherbill',
 'lol',
 'master',
 'pre 1.0',
 'pre-release',
 'prototype.1',
 'py3.3-v0.1.1',
 'py3.3-v0.1.134',
 'py3.3-v0.1.324',
 'py3.3-v0.1.326',
 'py3.3-v0.1.333',
 'py3.3-v0.1.336',
 'py3.3-v0.1.343',
 'py3.3-v0.1.350',
 'py3.3-v0.1.362',
 'py3.3-v0.1.364',
 'py3.3-v0.1.40',
 'py3.3-v0.1.477',
 'py3.3-v0.1.498',
 'py3.3-v0.1.4c71a75',
 'py3.3-v0.1.502',
 'py3.3-v0.1.513',
 'py3.3-v0.1.517',
 'py3.3-v0.1.530',
 'py3.3-v0.1.612',
 'py3.3-v0.1.c4ce311',
 'py3.3-v0.1.e8227bd',
 'py3.3-v0.2.40',
 'py3.3-v0.2.41',
 'py3.3-v0.2.46',
 'py3.3-v0.2.611',
 'py3.3-v0.2.642',
 'py3.3-v0.2.644',
 'py3.3-v0.2.648',
 'py3.3-v0.2.e6d7e59',
 'py3.3-v0.3.1',
 'py3.3-v0.3.41',
 'py3.3-v0.3.53',
 'py3.3-v0.3.56',
 'py3.3-v0.5.350',
 'py3.3-v0.5.352',
 'py3.3-v0.5.366',
 'py3.3-v0.6.611',
 'py3.3-v0.6.649',
 'py3.3-v0.6.88748d0',
 'py3.3-v0.7.41',
 'release candidate 3',
 'snapshot_9-14-2011',
 'stable 1.00',
 'stable 1.20',
 'tip',
 'trunk',
 'unknown',
 'unreleased.unofficialdev',
 'v 1.0',
 'v0.1-1-g106cf90',
 'v0.35.4-1-g738e9ca',
 'v0.40.1-1-ga8839ac',
 'v0.5-10-gea1e',
 'v0.5-11-g45ff',
 'v0.9.post5-2ab88bac2cd2',
 'v01_00',
 'version 2.0',
 'version 3.0.0',
 'versiontools-url-tracker-',
 'visimus-0.3.1',
 'working proof of concept']

My favorites:


In [23]:
[i for i in release if '1.3-The-Full-Monty' in release[i]]


Out[23]:
['tkRAD']

In [24]:
release['tkRAD']


Out[24]:
['1.4.1-Refer-And-Defer', '1.4-Tasmania-Sunset', '1.3-The-Full-Monty']

In [25]:
[i for i in release if 'Kenneth Reitz' in release[i]]


Out[25]:
['gh', 'git-hub', 'jsons', 'omnijson']

In [26]:
[i for i in release if '(latest release)' in release[i]]


Out[26]:
['ipkiss24ce',
 'pyaardvark',
 'plainbox',
 'reconfigure',
 'qingcloud-cli',
 'ndg',
 'terapy',
 'rueckenwind']

In [27]:
[i for i in release if '.lol.' in release[i]]


Out[27]:
['amoi']

In [28]:
release['amoi']


Out[28]:
['lol', '.lol.']

In [29]:
[i for i in release if '0.1.1.Galahad' in release[i]]


Out[29]:
['HolyGrail']

In [30]:
release['HolyGrail']


Out[30]:
['0.2.Perceval', '0.1.2.Galahad', '0.1.1.Galahad', '0.1.Galahad']

In [31]:
[i for i in release if '0.18 "Catty And The Major"' in release[i]]


Out[31]:
['Wah-Cade']

In [32]:
release['Wah-Cade']


Out[32]:
['0.19 "Nose Furnace"', '0.18 "Catty And The Major"']

In [33]:
[i for i in release if '0.66 "Train"' in release[i]]


Out[33]:
['Jajouka']

In [34]:
[i for i in release if '1.1.15-grammar-nazi' in release[i]]


Out[34]:
['django-couch-utils']

In [35]:
[i for i in release if 'infinite' in release[i]]


Out[35]:
['testtt']

In [36]:
[i for i in release if 'working proof of concept' in release[i]]


Out[36]:
['fruity-toots']

Top packages

This was the whole reason for doing this in the first place


In [37]:
package_downloads = {}
for package in releaseurls:
    downloads = 0
    for version in releaseurls[package]:
        for release in releaseurls[package][version]:
            downloads += release['downloads']
    package_downloads[package] = downloads

In [38]:
package_downloads['sympy']


Out[38]:
87618

In [39]:
top_downloads = sorted(package_downloads, key=lambda i: package_downloads[i], reverse=True)

And here you have it: the top 100 packages by total downloads


In [49]:
for i, rank in zip(top_downloads, range(100)):
    print(rank+1, i, package_downloads[i])


1 setuptools 22849472
2 distribute 21307279
3 lxml 15436715
4 certifi 14111966
5 wincertstore 13729596
6 boto 12673036
7 requests 12155101
8 pip 11952143
9 virtualenv 9862538
10 nose 8630338
11 six 8451205
12 ssl 7661131
13 pbr 7634519
14 zc.buildout 7535538
15 pytz 7467955
16 simplejson 7396857
17 Jinja2 6923066
18 Django 6676167
19 python-dateutil 6633235
20 coverage 5229094
21 pycrypto 4936454
22 Paste 4730822
23 MarkupSafe 4627812
24 paramiko 4326047
25 pymongo 4309585
26 docutils 4146920
27 psycopg2 4129883
28 PyYAML 4087670
29 PasteDeploy 4054492
30 httplib2 3986619
31 Pygments 3711511
32 SQLAlchemy 3704561
33 Werkzeug 3703257
34 redis 3617553
35 Flask 3528559
36 mock 3433229
37 MySQL-python 3395165
38 pyasn1 3263131
39 zope.interface 3251531
40 selenium 3193112
41 Fabric 3148916
42 kombu 3045043
43 greenlet 2963486
44 South 2870563
45 pep8 2676249
46 anyjson 2657021
47 celery 2520801
48 colorama 2353690
49 Sphinx 2345079
50 PrettyTable 2327071
51 gunicorn 2301786
52 supervisor 2285593
53 WebOb 2251084
54 PasteScript 2244278
55 rsa 2215300
56 carbon 2201768
57 Mako 2148995
58 setuptools-git 2141764
59 graphite-web 2133966
60 numpy 2124057
61 meld3 2078628
62 iso8601 2063720
63 ply 2044822
64 gevent 2002394
65 botocore 1936505
66 aspen 1923319
67 jmespath 1879234
68 awscli 1878716
69 bcdoc 1847773
70 suds 1760586
71 Babel 1755321
72 amqp 1742326
73 ipython 1711471
74 unittest2 1668704
75 billiard 1667425
76 zc.recipe.egg 1658442
77 pyparsing 1640292
78 d2to1 1626026
79 logilab-common 1619791
80 Markdown 1611249
81 Twisted 1584618
82 pygeoip 1584352
83 pyOpenSSL 1552102
84 tornado 1523453
85 pylint 1519879
86 Pillow 1514791
87 py 1452529
88 beautifulsoup4 1422543
89 python-novaclient 1359245
90 ecdsa 1323035
91 BeautifulSoup 1318261
92 decorator 1298320
93 raven 1291272
94 itsdangerous 1285348
95 Cython 1241838
96 ordereddict 1240159
97 eventlet 1215170
98 django-celery 1198062
99 pyflakes 1197632
100 msgpack-python 1168409

In [51]:
def rank(package):
    return top_downloads.index(package) + 1

In [52]:
rank('numpy')


Out[52]:
60

In [59]:
rank('sympy')


Out[59]:
1089

In [45]:
%matplotlib inline
from matplotlib.pyplot import plot

In [48]:
plot([package_downloads[i] for i in top_downloads][:100])


Out[48]:
[<matplotlib.lines.Line2D at 0x12686e3d0>]

In [ ]: